{{tag>Trusty Precise programmation plugin_navigateur }}
----

{{ :application:java:logo.png?80|Logo OpenJDK}} {{ java_logo.png?90|logo Java|}}

====== Java, Open JDK ======

===== Présentation =====
Défini à l'origine comme un langage, **[[wpfr>Java_(technique)|Java]]** a évolué au cours du temps pour devenir une technologie, qui intègre une bibliothèque complète pour exécuter ou développer une multitude d'applications. La particularité principale de **Java** est que les applications écrites dans ce langage sont très facilement portables sur plusieurs systèmes d’exploitation tels que %%UNIX%%, Windows, Mac %%OS%% ou %%GNU/Linux%%, avec peu ou pas de modifications. C’est la plate-forme qui garantit la portabilité des applications développées en **Java**. \\


La technologie Java regroupe aujourd'hui :
  * La plate-forme d'exécution %%JRE%% des programmes écrits dans ce langage  ( [[wpfr>Environnement_d%27ex%C3%A9cution_Java|Environnement d'exécution Java]] ).
  * la plate-forme de développement %%JDK%% ([[wpfr>Java_Development_Kit|Kit de développement Java]] ).
  * le greffon permettant d'exécuter des programmes spéciaux  écrits dans ce langage pour les [[:navigateur|navigateurs internet]].
Le tout forme un ensemble cohérent quoique modulaire, et selon vos besoins, vous installerez certains composants et pas d'autres. Dans la plupart des cas et si vous ne souhaitez pas [[#développer en Java]], l'installation de la plate-forme d'exécution des programmes %%JRE%% et le greffon pour les [[:navigateur|navigateurs internet]] suffisent. 

<note important>Certaines pages internet intègrent la technologie Java pour le fonctionnement avancé de certains services en ligne. Pour utiliser ces services, il est donc indispensable d'installer la plate-forme d'exécution **Java** et son greffon internet.</note>

===== Pré-requis =====

  * Disposer des [[:sudo|droits d'administration]].
  * Disposer d'une connexion à Internet configurée et activée.

=====Installation OpenJDK=====
**Java** ne pouvait être considéré comme un logiciel libre selon les critères de la [[wpfr>Fondation du logiciel libre]] car les bibliothèques de base de Java ainsi que son compilateur étaient non-libres. **[[wpfr>OpenJDK]]** est l'implémentation libre de la société Oracle du standard Java sous [[wpfr>Licence_publique_générale_GNU|Licence Publique Générale]]. Son utilisation est donc à recommander pour respecter la philosophie du logiciel libre. \\
Pour installer la plate-forme d'exécution %%JRE%% d'**OpenJDK**, il suffit d'[[:tutoriel:comment_installer_un_paquet|installer les paquets]] **[[apt>default-jre]]** et  son greffon pour les navigateurs internet : **[[apt>icedtea-plugin]]**. \\

<note>Ce greffon fonctionne avec les principaux navigateurs internet: [[ :Firefox]], [[ :Chromium]] et son dérivé [[ :Google Chrome]], et [[ :Epiphany]]. Pour [[ :Konqueror]], une fois installé, allez à **Paramètres** → **Configurer Konqueror **... et à partir du menu de sélection Java et JavaScript, cochez **Activer l'option Java environnement**. </note>
Redémarrez votre navigateur internet, et voilà, ça marche. \\
Pour l'installation de la version propriétaire **Java Oracle**, voir le chapitre [[#installation de la version propriétaire]].

===== Utilisation=====
Pour une utilisation basique, il n'y a pas de manipulation particulière à faire. Une fois installée, la plate-forme d’exécution Java est lancée au démarrage d'Ubuntu. Le Greffon est automatiquement exécuté lors du lancement du navigateur internet.

==== Exécuter un fichier JAR ====
Certaines applications Java sont distribuées sous forme de ''<NomDuFichier>.jar'' exécutable. Un fichier ''.jar'' n'est rien d'autre qu'une archive (comme un ''.zip'') contenant l'ensemble des fichiers nécessaires à l'exécution du programme.
<note important>Les fichiers .jar ne sont pas tous exécutables. Ils le sont //si et seulement si// dans le fichier ''META-INF/MANIFEST.MF'' une ligne contient : 
<file>Main-Class: <lenomdupackage>.<LeNomDeLaClassePrincipale></file> (en adaptant le nom de la classe principale).</note>


===En ligne de commande===
Pour les exécuter, Dans un [[ :terminal]], saisir la [[ :commande_shell|commande]] suivante :
<code> java -jar <fichier.jar> </code>

=== Par un double-clic ===
Il suffit d'associer les fichiers ''.jar'' à la plate-forme d'exécution Java. Pour cela, faire un clic droit sur un fichier ''.jar'' et choisir dans le menu déroulant "//ouvrir __a__vec//" -> "//__a__utre application...//". Il ne reste plus qu'à sélectionner la plate-forme d'exécution Java : \\
{{ :application:java:ouvrir_avec_java_01.png?450 |}} \\

==== Connaître la version de Java utilisée par défaut ====

Pour connaître la version de la plate-forme d'exécution Java, saisissez dans un [[:terminal]] la [[:commande_shell|commande]] suivante :
 <code> java -version </code>

Pour connaître la version de la plate-forme de développement (si vous avez installé un %%JDK%%) :
 <code> javac -version</code>

==== Changer la version de Java utilisée par défaut ====
=== De manière interactive ===
Saisissez dans un [[:terminal]] la [[:commande_shell|commande]] suivante :
<code>sudo update-alternatives --config java</code>
Ceci va lister la liste des versions disponibles, et vous n'aurez plus qu'à choisir le numéro de celle que vous souhaitez utiliser par défaut. \\
Et pour [[wpfr>Java_Web_Start|Java Web Start]], saisir :
<code>sudo update-alternatives --config javaws</code> 

=== De manière non interactive ===
Vous pouvez sélectionner la version de Java désirée (ici **OpenJDK**) en saisissant dans un [[:terminal]] la [[:commande_shell|commande]] suivante :
<code>sudo update-java-alternatives -s java-1.7.0-openjdk</code>
Pour obtenir la liste des versions disponibles, Saisir dans un [[:terminal]] la [[:commande_shell|commande]] suivante :
<code>update-java-alternatives -l</code>

=====Installation de la version propriétaire =====
====Depuis le site officiel====
Pour diverses raisons, vous pouvez être amené à devoir installer la version propriétaire **Java** d'[[http://www.oracle.com/fr/index.html|Oracle ]]. Par contre, le site officiel ne fournit que les fichiers binaires. Pour installer **Java**, il vous suffit alors de suivre la procédure décrite ci-dessous. \\
L'installation se fera depuis un [[:terminal]] avec les [[:sudo|droits d'administration]].
<note>Pour l'installation nous prendrons comme exemple un téléchargement de l'[[:archivage|archive]] ''**jdk-8u66-linux-x64.tar.gz**'' (Paquet pour les [[:architecture_materielle#mon_ubuntu_est-il_32_ou_64_bits|architectures]] Ubuntu 32 bits ) téléchargé dans le dossier **Téléchargements** de votre dossier personnel. ([[https://sites.google.com/site/easylinuxtipsproject/java#TOC-Install-JRE-32-bit-|Source (en)]]). A vous d'adapter si besoin. </note>
  - Se rendre sur la page de téléchargement du[[http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html|site officiel Oracle]] 
  - Accepter la licence d'utilisation et télécharger l'[[:archivage|archive]] ''**jdk-8u66-linux-x64.tar.gz**''
  - Installer java-package
<code>sudo apt-get install java-package</code>
Ouvrir un terminal et positionnez-vous dans le dossier où se trouve le fichier .tar.gz de java (Exemple jdk-8u66-linux-x64.tar.gz)
lancer la commande suivante:
<code>make-jpkg jdk-8u66-linux-x64.tar.gz</code>
Un fichier .deb va apparaître et il vous suffira juste de l'installer.

===Installation du greffon Firefox===
Toujours en lignes de [[:commande_shell|commande]] dans un [[:terminal]] :
  - Créer un dossier pour le greffon (Si il existe déjà, une notification vous en informera) : <code>mkdir -v ~/.mozilla/plugins</code> 
  - Enlever le greffon IcedTea, si il a été installée : <code>sudo apt-get remove icedtea-6-plugin && sudo apt-get remove icedtea-7-plugin</code>
  - Supprimer l'ancienne version du greffon Java : <code>rm -v ~/.mozilla/plugins/libnpjp2.so</code> Si il n’existe pas, une notification vous en informera. 
  - Nous allons installer le nouveau greffon en créant un lien symbolique pour indiquer à Firefox où se trouve le greffon : <code>ln -s /opt/java/32/jre1.7.0_55/lib/i386/libnpjp2.so ~/.mozilla/plugins/</code>

===Contrôle final===
  - Fermer  et relancer Firefox ;
  - Tapez dans la barre d'adresse de Firefox : //about:plugins //
  - Appuyez sur Entrée, et faites défiler vers le bas jusqu'à ce que vous voyez quelque chose à peu près semblable à ceci: **Java (TM) Plug-in 1.7.0_55**. 
<note tip>Vous pouvez également utiliser le [[http://java.com/fr/download/installed.jsp |lien de contrôle du site officiel d'Oracle]].</note>

==== Depuis le PPA====

<note important>Installer un paquet hors des dépôts officiels peut présenter un risque d'instabilité pour votre système.</note>
Si vous n'êtes pas familiarisé avec les [[:commande_shell|lignes de commande]], un [[:PPA]] permet d'installer la version propriétaire **Java** du site officiel d'Oracle d'une manière simple et automatisée. Il installera la totalité des composants, plate-forme de développement incluse.
  - [[:PPA|Ajouter le PPA]] **ppa:webupd8team/java**((https://launchpad.net/~webupd8team/+archive/java)) dans vos sources de logiciels; 
  - [[:tutoriel:comment_modifier_sources_maj#recharger_la_liste_des_paquets|recharger la liste des paquets]];
  - [[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt>oracle-java8-installer]]**.

Ou dans un [[:terminal]], saisir les [[:commande_shell|commandes]] suivantes : 
<code>sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
</code>
Puis accepter la licence d'utilisation d'Oracle.
<note tip>L'installation de l'ancienne version 7 d'Oracle ainsi que la version 9 est tout aussi possible depuis ce [[:PPA]]. Pour cela, remplacer le chiffre 8 par le chiffre de la version souhaitée.</note>

=====Développer en Java=====
Pour pouvoir développer en **Java**, en plus de la plate-forme d’exécution Java disponible dans le paquet %%JRE%%, il est indispensable d'avoir la plate-forme de développement Java avec les outils supplémentaires, disponibles dans les paquets %%JDK%% (Java Developpement Kit). 

====Installation OpenJDK====



Pour installer la plate-forme de développement JDK d'**OpenJDK**, il suffit d'[[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt>openjdk-8-jdk]]**.

Il est aussi possible d'installer la version d'**OpenJDK** la plus récente, il suffit d' ajoutant le ppa.

<note important>Installer un paquet hors des dépôts officiels peut présenter un risque d'instabilité pour votre système.</note>

  - [[:PPA|Ajouter le PPA]] **ppa:openjdk-r/ppa**((https://launchpad.net/~openjdk-r/+archive/ubuntu/ppa)) dans vos sources de logiciels; 
  - [[:tutoriel:comment_modifier_sources_maj#recharger_la_liste_des_paquets|recharger la liste des paquets]];
  - [[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt>openjdk-8-jdk]]**.
==== Installation de la version propriétaire ====
Pour diverses raisons, vous pouvez être amené à devoir installer la version propriétaire **Java** et/ou **Javac** d'[[http://www.oracle.com/fr/index.html|Oracle ]]. Par contre, ce dernier ne fournit que les fichiers binaires. Pour installer **Java** et/ou **Javac**, il vous suffit alors de suivre la procédure décrite ci-dessous. \\
L'installation se fera depuis un [[:terminal]] avec les [[:sudo|droits d'administration]].
<note>Pour l'installation nous prendrons comme exemple un téléchargement de l'[[:archivage|archive]] ''**jdk-8u20-linux-x64.tar.gz**'' (Paquet pour les [[:architecture_materielle#mon_ubuntu_est-il_32_ou_64_bits|architectures]] Ubuntu 64 bits ) téléchargé dans le dossier **Téléchargements** de votre dossier personnel. A vous d'adapter si besoin. </note>

  - Se rendre sur la page de téléchargement du[[http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html|site officiel Oracle]] 
  - Accepter la licence d'utilisation et télécharger l'[[:archivage|archive]] ''**jdk-8u20-linux-x64.tar.gz**''
  - Créer un nouveau sous-dossier Dans le dossier **/opt** <code>sudo mkdir /opt/java</code>
  - Se rendre dans le dossier **Téléchargements** et extraire l'[[:archivage|archive]] ''**jdk-8u20-linux-x64.tar.gz**'' que vous venez de télécharger <code>cd Téléchargements && tar xvzf ~/Téléchargements/jdk-8u20-linux-x64.tar.gz</code>
  - Déplacer les éléments décompressés de l'archive ''**jdk-8u20-linux-x64.tar.gz**'' dans le dossier système que vous avez créé à l'étape 1  <code>sudo mv -v ~/Téléchargements/jdk1.8.0_20 /opt/java/</code>
  - Informer le système de la nouvelle version de JavaJDK  <code>sudo update-alternatives --install "/usr/bin/javac" "javac" "/opt/java/jdk1.8.0_20/bin/javac" 1</code>  
  - Rendre son utilisation par défaut.  <code>sudo update-alternatives --set javac /opt/java/jdk1.8.0_20/bin/javac </code>

Si vous n'avez pas encore installé **Java**, vous pouvez utiliser celui compris dans l'archive de JDK que vous venez d'installer. 
  - Il vous suffit alors d'informer le système de la nouvelle version de Java. <code>sudo update-alternatives --install "/usr/bin/java" "java" "/opt/java/jdk1.8.0_20/jre/bin/java" 1</code>
  - Puis, de rendre son utilisation par défaut. <code>sudo update-alternatives --set java /opt/java/jdk1.8.0_20/jre/bin/java </code>

Finalement, vous pouvez vérifier que tout est bien installé.
  - <code>javac -version 
javac 1.8.0_20
</code>
  - <code>java -version 
java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)
</code>


=== Installation de la version propriétaire par script ===
[[http://pastebin.com/xGuvkQvQ|Script complet]]
=====Versions antérieures=====
Les procédures d'installation ci-dessus (%%JRE%%, greffons, et %%JDK%%) concernent les versions **7** d'**OpenJDK** et de **Java Oracle**. Malgré la compatibilité ascendante de Java, certains préfèrent, en entreprise notamment, utiliser une ancienne version pour développer car c'est sur cette version que le programme est destiné à être exécuté. Les anciennes versions, **6** d'**OpenJDK** et **Java Oracle** restent donc disponibles. Vous pouvez très bien installer la version **6** des paquets. Dans ce cas, dans les procédures d'installation il suffit de remplacer le **7** du nom des paquets par un **6**. La cohabitation des versions ne posent pas de problèmes particulier.

=====Problèmes connus=====

==== Police de caractères des menus trop petite (microscopique) sur grand écran ====

**Solution testé sous Kubuntu 12.04 64 bits avec écran 42" d'une résolution de 1920x1080 utilisant « Open%%JDK%% » (2013-07-28).**

^ Avant ^ Après ^
|{{ :arduino:taille_des_caracteres_des_menus_d_arduino_trop_petite.jpg?400 |Avant}} |{{ :arduino:taille_des_caracteres_des_menus_d_arduino_trop_petite_resolu_.jpg?400 |Après}}|


Pour corriger un problème de police de caractère trop petit dans l'écran d'accueil (écran du Login) et dans les applications écrite en langage Java, il faut modifier le fichier « /etc/X11/xorg.conf » pour qu'il reflète les mêmes valeurs que ce qui est configuré dans le panneau de configuration « Configuration -> Apparence des applications -> Polices -> Forcer le PPP des polices : XX ».

Chez moi cela donne : « Configuration -> Apparence des applications -> Polices -> Forcer le PPP des polices : 96 ». Ce "**96**" est à retenir pour la suite de la solution. \\
Donc, dans le fichier « /etc/X11/xorg.conf », dans « Section "Device" », ajouter à la fin les deux lignes suivantes en les adaptent à votre configuration :
<file>
    Option "UseEdidDpi" "False"
    Option "DPI" "XX x XX"</file>

Chez moi, je passe de :

 <file> Section "Device"
    Identifier "Device0"
    Driver     "nvidia"
    VendorName "NVIDIA Corporation"
    BoardName  "GeForce GTX 560 Ti"
  EndSection</file>
  
Avec mon "**96**", je passe à :

 <file> Section "Device"
    Identifier "Device0"
    Driver     "nvidia"
    VendorName "NVIDIA Corporation"
    BoardName  "GeForce GTX 560 Ti"
    Option     "UseEdidDpi" "False"
    Option     "DPI" "96 x 96"
  EndSection</file>

Un redémarrage de l'ordinateur et le tour est joué !

Tout le mérite de cette solution revient au bon génie Frédéric Côté, qui à laborieusement et méthodiquement suivi la piste du problème pour finalement le résoudre. Je profite de l'occasion pour le remercier d'autant d'effort pour aider son prochain !

==== Copier/Coller impossible de/vers un applet java (Firefox ) à partir de la version 1.7.45 du JRE Oracle (jre-7u45)====
Symptôme : Il est impossible de faire un copier/coller de ou vers une zone de texte d'un applet java.

Cause : à partir du JRE 1.7.45 , la modification du fichier .java.policy ne suffit plus. En effet, à partir de cette version,ce fichier n'est plus pris en compte.

Avant : il suffisait de créer/modifier le fichier .java.policy situé à la racine de son répertoire personnel ou dans le dossier /home/mondossier/.java afin d'autoriser le copier/coller entre applet java et les applications standards (libreOffice, gedit ...). Cette ligne à ajouter autorisait l'utilisation du presse-papier et donc du copier/coller : "permission java.awt.AWTPermission "accessClipboard" .

Maintenant : il faut en plus modifier le fichier deployment.properties qui se trouve dans le dossier /home/mondossier/.java/deployment en ajoutant cette ligne : "deployment.security.use.user.home.java.policy=true" afin que la machine virtuelle java utilise le fichier .java.policy .

==== Vote par internet====
Pour voter via internet aux élections (français de l’étranger par exemple) , le greffon **icetea** n'est pas accepté. Il faut  alors installer la plate-forme d’exécution %%JRE%% d'Oracle (voir le chapitre [[#installation de la version propriétaire]]) puis saisir dans un [[:terminal]] la [[:commande_shell|commande]] suivante :
<code>sudo update-alternatives --config mozilla-javaplugin.so</code>
et choisir le fichier d'Oracle (dans mon cas /usr/lib/jvm/java-7-oracle/jre/lib/amd64/libnpjp2.so)

<note help>Lors du premier chargement d'un greffon, il vous est demandé de choisir un répertoire temporaire. Laissez le choix par défaut (''/tmp'') et cliquez sur **OK**.</note>

Voir aussi : [[http://www.java.com/fr/download/help/enable_browser_ubuntu.xml | Aide officielle(fr) sur la détection du greffon par Google-Chrome et Mozilla ]]


=====Voir aussi=====
  * **(en)** [[http://openjdk.java.net/|Le site officiel d'OpenJDK]]
  * **(fr)** [[http://www.oracle.com/fr/index.html|Le site officiel d'Oracle ]]
  * ** (en)** [[http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-ubuntu-via.html|Le site de l'installation via le PPA webup8]]
 ----

//Contributeurs : [[utilisateurs:lami|L'ami René]], [[utilisateurs:cafecho]], [[utilisateurs:oizo]]